package day_2022_1_to_2.day16;

//1、一对相亲数是指：甲的约数之和等于乙，乙的约数之和等于甲。求1000以内的相亲数。

public class Day5_1 {
    public static void main(String[] args) {
        //方法1 new一个数组存放各个值的约数和
        System.out.println("方法1：");
        int[] arr=new int[1001];
        for (int i = 1; i <=1000 ; i++) {
            int divisorSum=0;
            for (int j = 1; j < i; j++) {
                if(i%j==0){
                    divisorSum+=j;
                }
            }
            arr[i]=divisorSum;
        }
        for (int i = 1; i <= 1000; i++) {
            for (int j = 1; j <= 1000; j++) {
                if(arr[j]==i && arr[i]==j && i!=j && i>j){
                    System.out.println("相亲数为"+i+"和"+j);
                }
            }
        }

        //方法2 func写一个求约数和的方法，需要时再带调用
        System.out.println("方法2：");
        for (int i = 1; i <= 1000 ; i++) {
            int j=func(i);
            if(i==func(j) && i>j){
                System.out.println("相亲数为"+i+"和"+j);
            }
        }
    }

    private static int func(int i) {
        int divisorSum=0;
        for (int j = 1; j < i; j++) {
            if(i%j==0){
                divisorSum+=j;
            }
        }
        return divisorSum;
    }
}
